package com.wpen.unit.infra.repository.job;

import java.io.Serializable;
import java.util.List;

import com.wpen.unit.enums.DependType;
import com.wpen.unit.infra.mybatis.job.po.DependonPo;

/**
 * 依赖信息维护.
 * 
 * @author pg
 *
 */
public interface DependonRepository {
	
    public List<DependonPo> queryAllBatchs(String bizCode);
    
    public List<DependonPo> queryAllPrtByOwn(String bizCode, String batchCode, String taskCode,String jobCode, Boolean includeParent, Boolean includeSub);
    
    public List<DependonPo> queryAllSubByParent(String dpnBizCode, String dpnBatchCode, String dpnTaskCode, boolean includeChild);

    public List<DependonPo> queryByOwn(String bizCode, String batchCode, String taskCode, String jobCode,
            DependType dpnBatchCode);

    public List<DependonPo> queryByParent(String dpnBizCode, String dpnBatchCode, String dpnTaskCode, String dpnJobCode,
            DependType dependType);

    public boolean deletePrtByCode(String bizCode, String batchCode, String taskCode);
    
    public boolean deleteSubByCode(String bizCode, String batchCode, String taskCode);

    /**
     * 查询记录条数.
     * 
     * @param index      起始索引号
     * @param size       查询条数
     * @param dependonPo 条件对象
     * @return 条数
     */
    public long count(DependonPo dependonPo);

    /**
     * 查询记录列表.
     * 
     * @param index      起始索引号
     * @param size       查询条数
     * @param dependonPo 条件对象
     * @return 数据列表
     */
    public List<DependonPo> queryList(int index, int size, DependonPo dependonPo);

    /**
     * 根据条件查询单条记录，如果多条符合条件，只返回第一条.
     * 
     * @param dependonPo 条件对象
     * @return 数据对象
     */
    public DependonPo queryFirst(DependonPo dependonPo);

    /**
     * 根据主键查询单条记录.
     * 
     * @param id 编号
     * @return 数据对象
     */
    public DependonPo queryById(Serializable id);

    /**
     * 插入单条记录.
     * 
     * @param dependonPo 待保存对象
     * @return 影响条数
     */
    public boolean insert(DependonPo dependonPo);

    /**
     * 插入多条记录.
     * 
     * @param listDependonPos 待保存列表对象
     * @return 影响条数
     */
    public boolean insertBatch(List<DependonPo> listDependonPos);

    /**
     * 根据条件更新记录. 实现类内部实现版本号+1操作.
     * 
     * @param dependonPo 待更新对象
     * @return 影响条数
     */
    public boolean updateById(DependonPo dependonPo);

    /**
     * 根据主键删除记录.
     * 
     * @param id 编号
     * @return 影响条数
     */
    public boolean deleteById(Serializable ids);
    
    public boolean deleteByIds(Serializable[] ids);

}
